package com.alkaid.user.mapper;

import com.alkaid.commons.entity.User;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import java.util.Date;

/**
 * @author Kylin
 */
@Mapper
public interface UserMapper extends BaseMapper<User> {
    /**
     * 通过用户名查询user.
     *
     * @param username the username
     * @return the user
     */
    User findUserByUsername(@Param("username") String username);

    /**
     * 通过用户id查询user.
     *
     * @param id the id
     * @return the user
     */
    User findUserById(@Param("id") Long id);

    /**
     * 查询昵称是否存在
     *
     * @param nickname 昵称
     * @return the user
     */
    User findNickname(@Param("nickname") String nickname);

    /**
     * 添加用户
     * @param user 用户信息
     * @return 插入行数
     */
    Integer insertUser(User user);

    /**
     * 更改用户信息
     *
     * @param user 用户信息
     * @return the integer
     */
    Integer updateUserInfo(User user);

    /**
     * 更改用户头像
     *
     * @param user 用户信息
     * @return the integer
     */
    Integer updateAvatar(User user);

    /**
     * 更改用户密码
     *
     * @param user 用户信息
     * @return the integer
     */
    Integer updatePassword(User user);

    /**
     * 更改用户手机号
     *
     * @param user 用户信息
     * @return the integer
     */
    Integer updateMobile(User user);

    /**
     * 查询VIP过期时间
     *
     * @param userId the user id
     * @return the date
     */
    @Select("select expired_time from t_user_role where role_id=3 and user_id=#{userId}")
    Date findVipExpiredTime(Long userId);
}
